package ar.edu.utn.frsf.tpae.a2012.g05;

import org.apache.log4j.Logger;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import ar.edu.utn.frsf.tpae.a2012.g05.dao.ClienteDao;
import ar.edu.utn.frsf.tpae.a2012.g05.entity.Cliente;
import ar.edu.utn.frsf.tpae.a2012.g05.entity.Cuenta;
import ar.edu.utn.frsf.tpae.a2012.g05.entity.Movimiento;
import ar.edu.utn.frsf.tpae.a2012.g05.service.ClienteService;
import ar.edu.utn.frsf.tpae.a2012.g05.service.CuentaService;
import ar.edu.utn.frsf.tpae.a2012.g05.service.MovimientoService;
import ar.edu.utn.frsf.tpae.a2012.g05.service.impl.ClienteServiceImpl;
import ar.edu.utn.frsf.tpae.a2012.g05.service.impl.CuentaServiceImpl;
import ar.edu.utn.frsf.tpae.a2012.g05.service.impl.MovimientoServiceImpl;
import ar.edu.utn.frsf.tpae.a2012.g05.util.EntityFactory;

/**
 * Hello world!
 *
 */
public class App 
{
	private static Logger logger = Logger.getLogger(App.class);
	
	private ClienteService clienteService;
	private CuentaService cuentaService;
	private MovimientoService movimientoService;
	
    public static void main( String[] args )
    {
        logger.info("Inicia la aplicacion");
    	App myApp = new App();
        myApp.run();
    }
    
    public App(){
    	
    	ApplicationContext ctx = new ClassPathXmlApplicationContext("negocio-context.xml");
//    	clienteService = (ClienteService) ctx.getBean("clienteService");
//    	cuentaService = (CuentaService) ctx.getBean("cuentaServiceImpl");
//    	movimientoService = (MovimientoService) ctx.getBean("movimientoServiceImpl");
    	
		clienteService = new ClienteServiceImpl();
		cuentaService = new CuentaServiceImpl();
		movimientoService = new MovimientoServiceImpl();
    }
    
    public void run() {
    	Cliente cliente = EntityFactory.getCliente();
    	clienteService.saveOrUpdate(cliente);
    	logger.info("Se guardó correctamente el cliente : " + cliente.toFullString());
    	
//    	Cuenta cuentaCte = EntityFactory.getCuentaCorriente();
//    	cuentaService.saveOrUpdate(cuentaCte);
//    	logger.info("Se guardó correctamente la cuenta corriente : " + cuentaCte.toFullString());
//    	
//    	Cuenta cajaAhorro = EntityFactory.getCajaAhorro();
//    	cuentaService.saveOrUpdate(cajaAhorro);
//    	logger.info("Se guardó correctamente la caja de ahorro : " + cajaAhorro.toFullString());
//    	
//    	Movimiento movimiento = EntityFactory.getMovimiento();
//    	movimientoService.saveOrUpdate(movimiento);
//    	logger.info("Se guardó correctamente el movimiento : " + movimiento.toFullString());
    }
}
